// 构造函数，封装实例化：
// this 提供了一种更优雅的方式，来隐式“传递”一个对象的引用，简洁易复用
// 用来处理实例和类之间的关系 this 共享属性和方法
// js 在函数中引入了this：new 不需要返回对象（call constructor），函数看起来像 构造函数——>实例化后的对象
function Cat(name, color) {
    this.name = name;
    this.color = color;

}
let cat1 = new Cat('大猫', '黄色');
let cat2 = new Cat('中猫', '绿色');

// Cat 和 cat1 什么关系
console.log(cat1.constructor);// [Function: Cat] 父子关系

// cat1 和 cat2 什么关系
console.log(cat1.constructor == cat2.constructor);// true 兄弟关系
console.log(cat1.__proto__.constructor == cat2.__proto__.constructor);// true

// 验证 cat1 和 Cat 在原型链上的关系
console.log(cat1 instanceof Cat);
console.log(Cat.prototype.isPrototypeOf(cat1));